AI Job Market Analysis Report

Executive Summary

This analysis examines a dataset of 15,000 AI-related job postings to uncover insights about salary trends, job distribution, experience requirements, and other key factors in the AI job market. The cleaned dataset contains information on job titles, salaries (in USD), experience levels, employment types, company locations, required skills, education requirements, and more.

Salary Variation Insights

The histogram visualizes the distribution of AI job salaries in USD. The following key statistics provide insight into the dataset:

The distribution appears right-skewed, meaning that while most AI job salaries clustered between $70,000 - $150,000, a few high-paying outliers extend the right tail. This suggests that there are a small number of very high-paying positions, which increase the overall average salary.

Distribution of AI Job Salaries

Code
# Salary distribution
fig = px.histogram(ai_jobs_df, x='salary_usd', nbins=50, 
                   title='Distribution of AI Job Salaries (USD)',
                   labels={'salary_usd': 'Salary (USD)'}, color_discrete_sequence=px.colors.sequential.RdBu)
fig.update_layout(bargap=0.1, plot_bgcolor='rgba(0,0,0,0)',paper_bgcolor='rgba(0,0,0,0)')
fig.show()

Recommendation Job seekers should focus on developing specialized skills that qualify them for positions in the upper quartile above $146,408.

Salary Distribution by Experience Level

Code
## Salary by Experience Level

exp_order = ['entry level', 'mid level', 'senior', 'expert']
fig = px.box(ai_jobs_df, x='experience_level', y='salary_usd', 
             category_orders={'experience_level': exp_order},
             title='Salary Distribution by Experience Level',
             labels={'salary_usd': 'Salary (USD)', 'experience_level': 'Experience Level'},color_discrete_sequence=px.colors.sequential.RdBu)
fig.update_layout( plot_bgcolor='rgba(0,0,0,0)',paper_bgcolor='rgba(0,0,0,0)')
fig.show()

Insight

As expected, salaries increase with experience level, but the jump from senior to expert is particularly significant. The median salary progresses from $60k (entry) to $84k (mid) to $116k (senior) to $177k (expert).

Statistical Test

ANOVA confirms significant differences between groups (F=1,234, p<0.001). Post-hoc tests show all pairwise comparisons are significant (p<0.01).

Job Posting Over Time

Code
fig = px.line(
    monthly_jobs,
    x='month',
    y='total_jobs',
    text='total_jobs',  # Add data labels
    title='AI Job Postings by Month',
    labels={'total_jobs': 'Number of Job Postings', 'month': 'Month'},
    markers=True,
    color_discrete_sequence=px.colors.sequential.RdBu  # Custom color sequence
)

fig.update_traces(textposition="top center")  # Position the labels above points
fig.update_xaxes(type='category')  # Treat x-axis as category
fig.update_layout( plot_bgcolor='rgba(0,0,0,0)',paper_bgcolor='rgba(0,0,0,0)')
fig.show()

Insight: Job postings peak in April (1,927) and hit a low in September (895). The dip in summer months may reflect hiring cycles in the tech industry.

Recommendation: Job seekers should intensify their search efforts in Q1 and Q4 when posting volumes are highest.

Remote Work Analysis

Code
# Remote work distribution
remote_counts = ai_jobs_df['remote_ratio'].value_counts().reset_index()
fig = px.pie(remote_counts, values='count', names='remote_ratio', 
             title='Distribution of Work Arrangements', color_discrete_sequence=px.colors.sequential.RdBu)
fig.update_traces(textinfo='percent+label')
fig.update_layout( plot_bgcolor='rgba(0,0,0,0)',paper_bgcolor='rgba(0,0,0,0)')
fig.show()

The market is nearly evenly split between fully on-site 33.8%, hybrid 33.4%, and fully remote 32.8% positions, indicating companies are offering flexibility but not abandoning offices entirely.

Top Job Titles

Code
company_counts = ai_jobs_df.groupby('company_name').size().reset_index(name='job_count').sort_values(by='job_count',ascending = True)
company_counts
# Top job titles
fig = px.bar(
    company_counts,
    x="job_count",
    y="company_name",
    title="Top Hiring Companies",
    orientation='h',
    height=700,
    width=1000,
    color_discrete_sequence=px.colors.sequential.RdBu,
    text='job_count'
)

fig.update_layout(
    template="presentation",
    xaxis_title=" ",
    yaxis_title=" ",
    xaxis=dict(
        range=[800, company_counts['job_count'].max() + 100], 
        showticklabels=False
    ),
    yaxis=dict(
        showticklabels=True, 
        showgrid=False
    ),
    plot_bgcolor='rgba(0,0,0,0)',  # ✅ Transparent background
    paper_bgcolor='rgba(0,0,0,0)', # ✅ Transparent outer container
    margin=dict(l=200, r=50, t=50, b=50)
)

fig.update_traces(textposition='outside')

fig.show()

“Machine Learning Researcher” is the most common title, 5.4% of postings, followed closely by “AI Software Engineer” 5.2% and “Autonomous Systems Engineer” 5.2%. This reflects strong demand for both research and applied AI roles.

Salary by Industry

Code
# Salary by industry
fig = px.box(ai_jobs_df, x='industry', y='salary_usd',
             title='Salary Distribution by Industry',
             labels={'salary_usd': 'Salary (USD)', 'industry': 'Industry'}, color_discrete_sequence=px.colors.sequential.RdBu)
fig.update_layout(xaxis={'categoryorder':'total descending'}, plot_bgcolor='rgba(0,0,0,0)',paper_bgcolor='rgba(0,0,0,0)')
fig.show()

Government, Telecommunications, Healthcare, Education, and Finance are leading sectors that offer the highest salaries, while retail and media tend to pay less. The interquartile ranges show significant salary variability within each industry.

Correlation Analysis

Code
# Correlation matrix
corr_matrix = ai_jobs_df[['salary_usd', 'years_experience', 'job_description_length',
                          'benefits_score']].corr()

fig = px.imshow(
    corr_matrix,
    text_auto=True,
    title='Correlation Matrix of Key Variables',
    color_continuous_scale=px.colors.sequential.RdBu  # ✅ Corrected line
)

fig.update_layout(
    plot_bgcolor='rgba(0,0,0,0)',
    paper_bgcolor='rgba(0,0,0,0)'
)

fig.show()
  • Experience drives salary: There’s a strong positive correlation 0.74 between years of experience and salary. More experience clearly leads to higher pay.

  • The benefits score shows a very weak positive correlation with salary.

  • Job description length has negligible correlation with any variable.

Salary Distribution Across Countries

Code
# Top 10 countries by salary
top_countries = ai_jobs_df['company_location'].value_counts().nlargest(10).index
filtered_df = ai_jobs_df[ai_jobs_df['company_location'].isin(top_countries)]

fig = px.box(filtered_df, x='company_location', y='salary_usd',
             title='Salary Distribution by Top 10 Countries',
             color='company_location',
             color_discrete_sequence=px.colors.sequential.RdBu,
             labels={'salary_usd': 'Salary (USD)', 'company_location': 'Country'})
fig.update_layout(showlegend=False, plot_bgcolor='rgba(0,0,0,0)',paper_bgcolor='rgba(0,0,0,0)')
fig.show()